// 2. 具体状态：待支付
/// <summary>
/// 具体状态类：待支付状态
/// 表示订单已创建但尚未支付的初始状态
/// </summary>
public class PendingState : OrderState
{
  /// <summary>
  /// 构造函数
  /// </summary>
  /// <param name="context">订单上下文对象</param>
  public PendingState(OrderContext context) : base(context) { }

  /// <summary>
  /// 支付操作 - 在待支付状态下可以支付，转换到已支付状态
  /// </summary>
  public override void Pay()
  {
    Console.WriteLine("订单已支付");
    _context.SetState(new PaidState(_context));
  }

  /// <summary>
  /// 发货操作 - 在待支付状态下不能发货
  /// </summary>
  public override void Ship() => Console.WriteLine("错误：未支付不能发货");
  
  /// <summary>
  /// 完成操作 - 在待支付状态下不能直接完成
  /// </summary>
  public override void Complete() => Console.WriteLine("错误：不能直接完成");
  
  /// <summary>
  /// 取消操作 - 在待支付状态下可以取消，转换到已取消状态
  /// </summary>
  public override void Cancel()
  {
    Console.WriteLine("订单已取消");
    _context.SetState(new CanceledState(_context));
  }
}